package com.gitee.huanminabc.jmapstruct;

import org.mapstruct.InheritInverseConfiguration;

import java.util.List;
import java.util.stream.Stream;

/**
 * mapstruct基本的对象转换接口，定义简单的转换规则
 *
 * @date 2023年02月24日
 */
public interface BaseConverter<SOURCE,TARGET> extends MapperConverter {

    /**
     * 映射同名属性
     */
    TARGET sourceToTarget(SOURCE var1);

    /**
     * 反向，映射同名属性
     */
    @InheritInverseConfiguration(name = "sourceToTarget")
    SOURCE targetToSource(TARGET var1);

    /**
     * 映射同名属性，集合形式
     */
    List<TARGET> sourceToTarget(List<SOURCE> var1);

    /**
     * 反向，映射同名属性，集合形式
     */
    List<SOURCE> targetToSource(List<TARGET> var1);

    /**
     * 映射同名属性，集合流形式
     */
    List<TARGET> sourceToTarget(Stream<SOURCE> stream);

    /**
     * 反向，映射同名属性，集合流形式
     */
    List<SOURCE> targetToSource(Stream<TARGET> stream);
}
